What is download?
The 'download' npm package is a utility that allows you to download files over HTTP or HTTPS. It is a high-level function that abstracts away the complexity of making HTTP requests and handling streams, making it easier to download files.
What are download's main functionalities?
Downloading files
This feature allows you to download files from a given URL and save them to a specified directory. The function returns a promise that resolves when the download is complete.
const download = require('download');
download('https://example.com/somefile.png', 'dist').then(() => {
console.log('File downloaded!');
});
Downloading and extracting archives
This feature enables the downloading of archive files like ZIP or TAR and automatically extracts them to a specified directory.
const download = require('download');
download('https://example.com/somearchive.zip', 'dist', { extract: true }).then(() => {
console.log('Archive downloaded and extracted!');
});
Downloading files with options
This feature allows you to pass custom options such as headers, query parameters, and more, providing additional control over the HTTP request.
const download = require('download');
const options = {
headers: { 'User-Agent': 'my-custom-agent' }
};
download('https://example.com/somefile.png', 'dist', options).then(() => {
console.log('File downloaded with custom headers!');
});
Other packages similar to download
axios
Axios is a promise-based HTTP client for the browser and Node.js. It provides more general HTTP request capabilities compared to 'download' and is often used for API interactions rather than file downloads.
got
Got is a human-friendly and powerful HTTP request library for Node.js. Similar to 'download', it supports streaming but offers a more extensive set of HTTP capabilities, making it suitable for a wider range of HTTP requests.
request
Request is a simplified HTTP request client for Node.js. Although it has been deprecated, it was once a popular choice for making HTTP requests and supports file downloads, but with less abstraction compared to 'download'.
node-fetch
Node-fetch is a light-weight module that brings the Fetch API to Node.js. It is similar to 'download' in that it can be used to download files, but it is designed to closely mimic the browser fetch API.
download
Download and extract files effortlessly
Install
$ npm install --save download
Usage
If you're fetching an archive you can set extract: true
in options and
it'll extract it for you.
var Download = require('download');
var progress = require('download-status');
var download = new Download()
.get('http://example.com/foo.zip', 'destFolder', { extract: true, strip: 1 })
.get('http://example.com/bar.jpg', 'destFolder')
.get({ url: 'http://example.com/bar.jpg', name: 'foobar.jpg' }, 'destFolder')
.use(progress());
download.run(function (err) {
if (err) {
throw err;
}
console.log('Download complete!');
});
API
new Download(opts)
Creates a new Download
instance. Options defined here will be applied to all
downloads.
.get(file, dest, opts)
Add a file to download. The file
argument accepts a String
containing a URL
or an Object
with a URL and a desired name. For example { url: http://example.com/file.zip, name: 'foo.zip' }
.
Options defined here will only apply to the specified file.
.use(plugin)
Adds a plugin to the middleware stack.
.proxy(proxy)
Set proxy settings. Defaults to process.env.HTTPS_PROXY || process.env.https_proxy || process.env.HTTP_PROXY || process.env.http_proxy;
.
.run(cb)
Downloads your files and returns an error if something has gone wrong.
Options
You can define options accepted by the request
module besides from the options below.
Type: Boolean
Default: false
If set to true
, try extracting the file using decompress.
mode
Type: Number
Default: null
Set mode on the downloaded file.
strip
Type: Number
Default: 0
Equivalent to --strip-components
for tar.
License
MIT © Kevin Mårtensson